struct point
{
	double x, y;

	point():
		x(0.0),
		y(0.0)
	{};

	point(const point& a):
		x(a.x),
		y(a.y)
	{};

	point(double a, double b):
		x(a),
		y(b)
	{};

	bool operator ==(const point& p) const
	{
		return (x == p.x) && (y == p.y);
	};
};

struct segment
{
	point from, to;

	segment()
	{};

	segment(const point& a, const point& b):
		from(a),
		to(b)
	{};
};